package 剑指offer;

import java.util.Scanner;

/** 

* @author ：soulstones
* @version ：2019年9月30日 下午10:02:06 
* @Description：
* 
题目描述
将一个字符串转换成一个整数，要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字，否则返回0
示例1
输入
+2147483647
    1a33
输出
2147483647
    0
*/
public class A49把字符串转换为整数 {
	
	//空间复杂度：O(n)O(n)
	//时间复杂度：O(1)O(1)
	  public static  int StrToInt(String str) {
			   if (str == null || str.length() == 0) {
			          return 0;
			      }
			      int i = 0;
			      int len = str.length();
			      boolean negative = false;
			      int result = 0;
			      if (len > 0) {
			          char firstchar = str.charAt(0);
			          if (firstchar == '-') {
			              negative = true;
			              i++;
			          } else if (firstchar == '+') {
			              i++;
			          } else if (firstchar > '9' || firstchar < '0') {
			              return 0;
			          }
			          if (len == 1) {
			              return 0;
			          }
			          while (i < len) {
			              if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
			                  int digit = str.charAt(i++) - '0';
			                  result *= 10;
			                  result += digit;
			              } else {
			                  return 0;
			              }
			          }
			          return negative ? -result : result;
			      } else {
			          return 0;
			      }
	    }
	  
	  public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String s = scanner.next();
		System.out.println(StrToInt(s));
	}

}
